home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / dist / complib.idb / usr / share / catman / p_man / cat3 / complib / zunmhr.z / zunmhr
Text File  |  1996-03-14  |  4KB  |  133 lines

  1.  
  2.  
  3.  
  4. ZZZZUUUUNNNNMMMMHHHHRRRR((((3333FFFF))))                                                          ZZZZUUUUNNNNMMMMHHHHRRRR((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      ZUNMHR - overwrite the general complex M-by-N matrix C with   SIDE = 'L'
  10.      SIDE = 'R' TRANS = 'N'
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      SUBROUTINE ZUNMHR( SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, LDC,
  14.                         WORK, LWORK, INFO )
  15.  
  16.          CHARACTER      SIDE, TRANS
  17.  
  18.          INTEGER        IHI, ILO, INFO, LDA, LDC, LWORK, M, N
  19.  
  20.          COMPLEX*16     A( LDA, * ), C( LDC, * ), TAU( * ), WORK( LWORK )
  21.  
  22. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  23.      ZUNMHR overwrites the general complex M-by-N matrix C with TRANS = 'C':
  24.      Q**H * C       C * Q**H
  25.  
  26.      where Q is a complex unitary matrix of order nq, with nq = m if SIDE =
  27.      'L' and nq = n if SIDE = 'R'. Q is defined as the product of IHI-ILO
  28.      elementary reflectors, as returned by ZGEHRD:
  29.  
  30.      Q = H(ilo) H(ilo+1) . . . H(ihi-1).
  31.  
  32.  
  33. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  34.      SIDE    (input) CHARACTER*1
  35.              = 'L': apply Q or Q**H from the Left;
  36.              = 'R': apply Q or Q**H from the Right.
  37.  
  38.      TRANS   (input) CHARACTER*1
  39.              = 'N': apply Q  (No transpose)
  40.              = 'C': apply Q**H (Conjugate transpose)
  41.  
  42.      M       (input) INTEGER
  43.              The number of rows of the matrix C. M >= 0.
  44.  
  45.      N       (input) INTEGER
  46.              The number of columns of the matrix C. N >= 0.
  47.  
  48.      ILO     (input) INTEGER
  49.              IHI     (input) INTEGER ILO and IHI must have the same values as
  50.              in the previous call of ZGEHRD. Q is equal to the unit matrix
  51.              except in the submatrix Q(ilo+1:ihi,ilo+1:ihi).  If SIDE = 'L',
  52.              then 1 <= ILO <= IHI <= M, if M > 0, and ILO = 1 and IHI = 0, if
  53.              M = 0; if SIDE = 'R', then 1 <= ILO <= IHI <= N, if N > 0, and
  54.              ILO = 1 and IHI = 0, if N = 0.
  55.  
  56.      A       (input) COMPLEX*16 array, dimension
  57.              (LDA,M) if SIDE = 'L' (LDA,N) if SIDE = 'R' The vectors which
  58.              define the elementary reflectors, as returned by ZGEHRD.
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. ZZZZUUUUNNNNMMMMHHHHRRRR((((3333FFFF))))                                                          ZZZZUUUUNNNNMMMMHHHHRRRR((((3333FFFF))))
  71.  
  72.  
  73.  
  74.      LDA     (input) INTEGER
  75.              The leading dimension of the array A.  LDA >= max(1,M) if SIDE =
  76.              'L'; LDA >= max(1,N) if SIDE = 'R'.
  77.  
  78.      TAU     (input) COMPLEX*16 array, dimension
  79.              (M-1) if SIDE = 'L' (N-1) if SIDE = 'R' TAU(i) must contain the
  80.              scalar factor of the elementary reflector H(i), as returned by
  81.              ZGEHRD.
  82.  
  83.      C       (input/output) COMPLEX*16 array, dimension (LDC,N)
  84.              On entry, the M-by-N matrix C.  On exit, C is overwritten by Q*C
  85.              or Q**H*C or C*Q**H or C*Q.
  86.  
  87.      LDC     (input) INTEGER
  88.              The leading dimension of the array C. LDC >= max(1,M).
  89.  
  90.      WORK    (workspace/output) COMPLEX*16 array, dimension (LWORK)
  91.              On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
  92.  
  93.      LWORK   (input) INTEGER
  94.              The dimension of the array WORK.  If SIDE = 'L', LWORK >=
  95.              max(1,N); if SIDE = 'R', LWORK >= max(1,M).  For optimum
  96.              performance LWORK >= N*NB if SIDE = 'L', and LWORK >= M*NB if
  97.              SIDE = 'R', where NB is the optimal blocksize.
  98.  
  99.      INFO    (output) INTEGER
  100.              = 0:  successful exit
  101.              < 0:  if INFO = -i, the i-th argument had an illegal value
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.